/*
 * GraphicsManager.h
 *
 *  Created on: Sep 29, 2009
 *      Author: tiago.zaccaro
 */

#ifndef GRAPHICSMANAGER_H_
#define GRAPHICSMANAGER_H_

#include "Prerequisites.h"
#include "Camera.h"
#include "Viewport.h"
#include "Singleton.h"

namespace AcquaEngine {

namespace Graphics {

class GraphicsManager : public Singleton<GraphicsManager> {
public:
	typedef std::vector<Ogre::RenderWindow*> RenderWindows;
	typedef std::vector<Camera*> Cameras;
	typedef std::vector<Viewport*> Viewports;
private:
	Ogre::Root *mRoot;
protected:
	RenderWindows mRenderWindows;
	Cameras mCameras;
	Viewports mViewports;
	Ogre::SceneManager *mSceneMgr;
public:
	GraphicsManager();
	virtual ~GraphicsManager();
	bool initialise();
	void destroy();

	Camera *createCamera(Ogre::String name);
	Viewport *createViewport(Ogre::Camera *camera, Ogre::RenderWindow *window);
	Ogre::SceneManager *getSceneManager();
	Ogre::Root *getRoot();
};

}

}

#endif /* GRAPHICSMANAGER_H_ */
